package cn.edu.zust.se.service.disk.controller;

import cn.dev33.satoken.stp.StpUtil;
import cn.edu.zust.se.api.common.R;
import cn.edu.zust.se.api.entity.Disk;
import cn.edu.zust.se.api.entity.File;
import cn.edu.zust.se.api.entity.vo.DiskVo;
import cn.edu.zust.se.api.entity.vo.FileAndFolderVo;
import cn.edu.zust.se.service.disk.service.DiskService;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/disk")
@RequiredArgsConstructor
public class DiskController {
    private final DiskService diskService;
    //新增网盘
    @PostMapping ("/addDisk/{userid}")
    public R<Boolean> addDisk(@PathVariable Long userid) {
        Disk disk = new Disk();
        disk.setUserId(userid);
        disk.setCapacity("50G");
        disk.setUsedCapacity("0");
        return R.ok(diskService.save(disk));
    }
    //获取登录用户的网盘存储空间
    @GetMapping("/getDisk")
    public R<DiskVo> getDisk() {
        Disk disk = diskService.getInfoByUserId(StpUtil.getLoginIdAsLong());
        if(disk != null){
            return R.ok(BeanUtil.copyProperties(disk, DiskVo.class));
        }
        return R.fail("无法获取当前用户网盘信息");
    }

    // 获取个人网盘的文件
    // 主页（最外层级相当于一个文件夹 其id=0)
    // type为1 代表正常文件，为2 代表回收站文件
    // @GetMapping("/getFiles/{folderId}/{type}")
    // public R<FileAndFolderVo> getFilesAndFolder(@PathVariable Long folderId,@PathVariable Integer type) {
    //     FileAndFolderVo fileAndFolderVo = diskService.getFilesAndFolders(folderId,type);
    //     if (fileAndFolderVo.getFiles().isEmpty()&&fileAndFolderVo.getFolders().isEmpty()){
    //         return R.fail("无法获取当前用户网盘文件",null);
    //     }
    //     return R.ok(fileAndFolderVo);
    // }

}

